package com.liuyu.common.framework.rocketmq.strategy.service.facade;

import org.apache.rocketmq.common.message.MessageExt;
import org.springframework.messaging.Message;

/**
 * 事物消息接口，在这里处理整整的提交以及检查逻辑
 * @author: liuyu
 * @date: 2022/4/9 21:54
 * @version: 1
 */
public interface TransactionServiceStrategy {


    /**
     * 队列类型
     * @author liuyu
     * @date 2022/4/10 13:09
     * @return java.lang.String
     */
    String getQueueType();

    /**
     * 执行本地方法
     * @author liuyu
     * @date 2022/4/9 21:57 
     * @param message
     * @param o
     * @return boolean
     */
    boolean executeTransaction(Message message, Object o);

    /**
     * 进行本地的事务校验
     * @author liuyu
     * @date 2022/4/9 21:58
     * @param message
     * @return boolean
     */
    Integer checkTransaction(Message message);


    /**
     * 事务失败处理
     * @author liuyu
     * @date 2022/4/9 21:58
     * @param message
     * @return boolean
     */
    boolean checkTransactionFail(Message message);

    /**
     * 事务重试次数
     * @author liuyu
     * @date 2022/4/10 13:30
     * @return int
     */
    int getMaxTryTimes();
}
